package aceim.protocol.snuk182.vkontakte;
import aceim.api.dataentity.ActionFeature;
import aceim.api.dataentity.ListFeature;
import aceim.api.dataentity.ProtocolOption;
import aceim.api.dataentity.ProtocolOption.ProtocolOptionType;
import aceim.api.dataentity.ProtocolServiceFeature;
import aceim.api.dataentity.ProtocolServiceFeatureTarget;
import aceim.api.service.ApiConstants;
import aceim.api.service.ProtocolService;
import aceim.api.utils.Logger;
import aceim.api.utils.Logger.LoggerLevel;
import aceim.protocol.snuk182.vkontakte.internal.VkApiConstants;
import android.content.Intent;
public class VkProtocol extends ProtocolService<VkService> {
@Override
protected VkService createService(byte arg0, String arg1) {
return new VkService(arg0, arg1, getCallback(), getBaseContext());
}
@Override
protected ProtocolServiceFeature[] getProtocolFeatures() {
return new ProtocolServiceFeature[]{
new ActionFeature(VkApiConstants.FEATURE_GROUPCHATS,
getBaseContext().getString(R.string.groupchats),
R.drawable.ic_menu_allfriends,
false,
false,
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.ACCOUNT}),
new ListFeature(ApiConstants.FEATURE_XSTATUS,
getBaseContext().getString(R.string.status_string),
android.R.drawable.ic_menu_edit,
false,
true,
true,
null,
null,
true,
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.ACCOUNT})
};
}
@Override
protected String getProtocolName() {
return VkConstants.PROTOCOL_NAME;
}
@Override
protected ProtocolOption[] getProtocolOptions() {
ProtocolOption[] a = new ProtocolOption[]{
new ProtocolOption(ProtocolOptionType.STRING, VkConstants.KEY_USERNAME, null, R.string.username, true),
new ProtocolOption(ProtocolOptionType.PASSWORD, VkConstants.KEY_PASSWORD, null, R.string.password, true),
//new ProtocolOption(ProtocolOptionType.CHECKBOX, VkConstants.KEY_AUTO_SUBMIT_AUTH_DIALOG, "true", R.string.auto_submit_auth_dialog, true),
//new ProtocolOption(ProtocolOptionType.STRING, VkConstants.KEY_AUTH_SERVER_URL, VkConstants.OAUTH_SERVER, R.string.auth_server_url, true),
new ProtocolOption(ProtocolOptionType.INTEGER, VkConstants.KEY_LONGPOLL_WAIT_TIME, VkConstants.POLL_WAIT_TIME, R.string.longpoll_wait_time, true),
};
return a;
}
@Override
public void onStart(Intent intent, int startId) {
handleCommand(intent);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handleCommand(intent);
return START_NOT_STICKY;
}
private void handleCommand(Intent intent) {
String uid = intent.getStringExtra(VkConstants.KEY_PROTOCOL_ID);
for (VkService as : mAccountServices) {
if (as.getProtocolUid().equals(uid)) {
as.loginResult(intent.getExtras());
return;
}
}
Logger.log("Cannot find account service #" + uid, LoggerLevel.WTF);
}
}